// Copyright (c) 2009 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "linux_port.h"
#include <stdlib.h>
#include <string.h>
#include <uuid/uuid.h>

static const char* progname = NULL;

void setprogname(const char* name) {
  progname = name;
}
const char* getprogname(void) {
  return (progname == NULL) ? "gpt" : progname;
}

void strlcpy(char* dst, const char* src, size_t len) {
  strncpy(dst, src, len);
  if (len > 0) {
    dst[len - 1] = '\0';
  }
}

int32_t uuid_equal(struct uuid* a, struct uuid* b, uint32_t* unused) {
  return (uuid_compare(*(uuid_t *)a, *(uuid_t *)b) == 0);
}
int32_t uuid_is_nil(struct uuid* uuid, uint32_t* unused) {
  return uuid_is_null(*(uuid_t *)uuid);
}
void uuid_create(struct uuid* uuid, uint32_t* unused) {
  return uuid_generate(*(uuid_t *)uuid);
}
void uuid_create_nil(struct uuid* uuid, uint32_t* unused) {
  return uuid_clear(*(uuid_t *)uuid);
}
void uuid_from_string(const char* s, struct uuid* uuid, uint32_t* status) {
  *status = uuid_parse(s, *(uuid_t *)uuid);
}
void uuid_to_string(struct uuid* uuid, char** s, uint32_t* unused) {
  *s = malloc(36 + 1);  /* 36 byte uuid plus '\0' */
  uuid_unparse(*(uuid_t *)uuid, *s);
}
